package beans;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.*;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlSeeAlso;

import org.hibernate.annotations.OnDelete;
import org.hibernate.annotations.OnDeleteAction;



@Entity
@Table(name="Listas")
@OnDelete(action = OnDeleteAction.CASCADE)
@XmlRootElement(name = "Lista")
public class Lista implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private long idLista;
	
	@Column(nullable=false)
	private String descripcion;
	
	@Column(nullable=true)
	@Temporal(TemporalType.DATE)
	private Date fecha;
	
	@ManyToOne(optional=false, fetch=FetchType.EAGER)//LAZY
	private Proveedor proveedor;
	
	@XmlElementWrapper(name="Items")
	@XmlElementRef()
	@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER)//LAZY
	private List<ItemLista> items;
	
	@Column(nullable=false)
	private boolean activa;
	
	@Column(nullable=false)
	private boolean listaOferta;

	
	
	
	
	
	public long getIdLista() {
		return idLista;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public Date getFecha() {
		return fecha;
	}

	public Proveedor getProveedor() {
		return proveedor;
	}

	public List<ItemLista> getItems() {
		return items;
	}

	public boolean isActiva() {
		return activa;
	}

	public boolean isListaOferta() {
		return listaOferta;
	}

	public void setIdLista(long idLista) {
		this.idLista = idLista;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	public void setProveedor(Proveedor proveedor) {
		this.proveedor = proveedor;
	}

	public void setItems(List<ItemLista> items) {
		this.items = items;
	}

	public void setActiva(boolean activa) {
		this.activa = activa;
	}

	public void setListaOferta(boolean listaOferta) {
		this.listaOferta = listaOferta;
	}
	public  String toString(){
		return "esto es una lista: idLista:"+idLista+"descripcion: "+descripcion;
	}
}
